package com.academicsystem.www.service;

import com.academicsystem.www.dao.Dao;
import com.academicsystem.www.model.Graph;
import com.academicsystem.www.model.Lesson;
import com.academicsystem.www.model.Major;
import com.academicsystem.www.model.SettingLesson;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * @author Jacky
 */
public interface Service {
    /**
     * 获取专业名称列表
     * @return 专业名称列表
     */
    List<Major> getMajorTable();

    /**
     * 获取课程列表
     * @param majorId 专业id
     * @return 专业对应课程列表
     */
    List<Lesson> getLessonList(Integer majorId);
    /**
     * 获取专业计划的有向图
     * @param majorId 专业id
     * @return 专业计划的有向图
     */
    Graph showGraph(Integer majorId);

    /**
     * 为选定专业生成教学计划
     * @param majorId 专业id
     * @param limitCredit 每学期限修学分
     * @return 计划列表
     */
    List<Lesson> makePlan(Integer majorId,double limitCredit);

    /**
     * 添加专业
     * @param majorName 专业名称
     * @return 专业id
     */
    Integer addMajor(String majorName);

    /**
     * 删除专业
     * @param majors 专业列表
     */
    void deleteMajor(List<Major> majors);

    /**
     * 添加课程
     * @param lesson 课程实体
     */
    void addLesson(Lesson lesson);

    /**
     * 获取除了某课程以外的其他课程
     * @param lessonId 添加先修关系的课程id
     * @param majorId 专业id
     * @return 课程列表
     */
    List<Lesson> getLessonExcept(Integer lessonId,Integer majorId);

    /**
     * 设置先修课程
     * @param settingLesson 设置先修课程实体
     */
    void addBefore(SettingLesson settingLesson);
}
